package com.googlecode.maratische.google.testBrowser;

import java.awt.Component;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.event.ListDataListener;

public class MultiLineJListExample extends JFrame {
	MultiLineJListExample() {
		super("Multi-Line JList Example");

		ListModel dm = new ListModel() {

			@Override
			public void removeListDataListener(ListDataListener l) {
			}

			@Override
			public int getSize() {
				return 10;
			}

			@Override
			public Object getElementAt(int index) {
				return "Уважаемые коллеги!!! Совсем скоро будет отмечаться праздник всех влюбленных.  День Святого Валентина отмечают во всем мире ежегодно.     14 февраля - прекрасная возможность для влюбленных высказать свои чувства к другому на языке подарков и символов.     Не упусти возможность поздравить коллег, людей, с которыми ты проводишь 8 часов в день, 5 дней в неделю…    Напиши пожелания всем кто тебе не безразличен, кто тебе симпатичен, можно даже признаться в любви…";
			}

			@Override
			public void addListDataListener(ListDataListener l) {
				// TODO Auto-generated method stub

			}
		};

		JList table = new JList(dm);

		//
		// table.setRowHeight(0);
		//
		// I got "java.lang.IllegalArgumentException: New row height less than
		// 1"
		//
		table.setCellRenderer(new MultiLineJListRenderer());
		JScrollPane scroll = new JScrollPane(table);
		getContentPane().add(scroll);
		setSize(400, 130);
		setVisible(true);
	}

	public static void main(String[] args) {
		MultiLineJListExample frame = new MultiLineJListExample();
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}
}

/**
 * @version 1.0 11/09/98
 */

class MultiLineJListRenderer extends JTextArea implements ListCellRenderer {

	private static final long serialVersionUID = 4841805951648532521L;

	public MultiLineJListRenderer() {
		setLineWrap(true);
		setWrapStyleWord(true);
		setOpaque(true);
		setColumns(20);
	}

	/*
	 * public Component getTableCellRendererComponent(JTable table, Object
	 * value, boolean isSelected, boolean hasFocus, int row, int column) { if
	 * (isSelected) { setForeground(table.getSelectionForeground());
	 * setBackground(table.getSelectionBackground()); } else {
	 * setForeground(table.getForeground());
	 * setBackground(table.getBackground()); } setFont(table.getFont()); if
	 * (hasFocus) {
	 * setBorder(UIManager.getBorder("Table.focusCellHighlightBorder")); if
	 * (table.isCellEditable(row, column)) {
	 * setForeground(UIManager.getColor("Table.focusCellForeground"));
	 * setBackground(UIManager.getColor("Table.focusCellBackground")); } } else
	 * { setBorder(new EmptyBorder(1, 2, 1, 2)); } setText((value == null) ? ""
	 * : value.toString()); return this; }
	 */

	@Override
	public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
		setText((value == null) ? "" : value.toString());
		return this;
	}
}